package Array;


import java.util.Arrays;

public class DuiPaiXu {
    public static void main(String[] args) {
        int []arr={1,0,6,7,2,3,4};
        //调整成大顶堆的方法
        //定义开始调整的位置
        int startIndex=(arr.length-1)/2;
        //循环调整
        for (int i = startIndex; i >=0; i--) {
                 toMaxHeap(arr,arr.length,i);
        }
        System.out.println(Arrays.toString(arr));
    }
/**
 * arr 要排序的数组
 * size 调整的元素个数
 * index从哪里开始调整
 * */
    private static void toMaxHeap(int[] arr,int size,int index){
        //获取左右字节的索引
        int leftNodeIndex=index*2+1;
        int rightNodeIndex=index*2+2;
         //找到最大节点的索引
        int maxIndex =index;
        if(leftNodeIndex<size&&arr[leftNodeIndex]>arr[maxIndex]){
            maxIndex=leftNodeIndex;
        }
        if(rightNodeIndex<size&&arr[rightNodeIndex]>arr[maxIndex]){
            maxIndex=rightNodeIndex;
        }
        //调换位置
        if(maxIndex!=index){
            int t=arr[maxIndex];
            arr[maxIndex]=arr[index];
            arr[index]=t;
        }
        toMaxHeap(arr, size, maxIndex);
    }
}
